package info.motteke.mixivoice4j.http.html;

import info.motteke.mixivoice4j.ImageUrl;
import info.motteke.mixivoice4j.MixiVoiceException;
import info.motteke.mixivoice4j.User;
import info.motteke.mixivoice4j.http.StringImageUrl;

import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class RecentVoiceEntryUser implements User {

    private final Element archive;

    public RecentVoiceEntryUser(Element archive) {
        this.archive = archive;
    }

    @Override
    public long getId() {
        Elements memberId = archive.select(".memberId");

        if (memberId.size() == 0) {
            throw new MixiVoiceException("最新のつぶやきのエントリからユーザIDを取得できません。");
        }

        return Long.parseLong(memberId.get(0).val());
    }

    @Override
    public String getNickName() {
        Elements nickname = archive.select(".nickname");

        if (nickname.size() == 0) {
            throw new MixiVoiceException("最新のつぶやきのエントリからニックネームを取得できません。");
        }

        return nickname.get(0).val();
    }

    @Override
    public ImageUrl getThumbnail() {
        Elements img = archive.select(".thumbArea > span.thumb > a > img");

        if (img.size() == 0) {
            throw new MixiVoiceException("最新のつぶやきのエントリからサムネイルを取得できません。");
        }
        return new StringImageUrl(img.attr("src"));
    }

}
